JuliaSyntax: Disallow broadcasted getindex#60277
Merged
Conversation
mlechu
approved these changes
Dec 2, 2025
Member
mlechu
left a comment
There was a problem hiding this comment.
Tests need fixing, but the change sounds OK
The flisp parser rejects expressions like `[1,2].[(1,2)]` with a syntax
error, but JuliaSyntax was allowing them to parse and then fail at
runtime with a confusing MethodError about getproperty.
This adds a check in `parse_call_chain` to emit a syntax error when
`[` or `{` follows `.`, matching the flisp parser's behavior. Parser
AST tests are added alongside the existing diagnostic tests, and the
test/syntax.jl tests are updated to use `@test_parseerror` now that
these are parse-time errors rather than lowering errors.
Fixes #60270
Co-Authored-By: Keno Fischer <keno@juliacomputing.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
7f0bc80 to
5220a63
Compare
56 tasks
Member
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The flisp parser rejects expressions like
[1,2].[(1,2)]with a syntax error, but JuliaSyntax was allowing them to parse and then fail at runtime with a confusing MethodError about getproperty.Note that in the flisp parser, this was allowed in the parser, but then disallowed in lowering. It's all a bit messy. My preference is to disallow this at the parser level for now and then introduce this as a proper feature with syntax evolution in the future. I don't think we want the production here to match what the flisp parser used to do. Given all those considerations, I think a syntax error is appropriate here for the moment.
Fixes #60270